<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.4"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Flow-IPC: ipc::session::shm::arena_lend::jemalloc::Session_mv&lt; Session_t &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">Flow-IPC<span id="projectnumber">&#160;2.0.0</span>
   </div>
   <div id="projectbrief">Flow-IPC project: Full implementation reference.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.4 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceipc.html">ipc</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1session.html">session</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1session_1_1shm.html">shm</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend.html">arena_lend</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc.html">jemalloc</a></li><li class="navelem"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">Session_mv</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#related">Related Functions</a> &#124;
<a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv-members.html">List of all members</a>  </div>
  <div class="headertitle"><div class="title">ipc::session::shm::arena_lend::jemalloc::Session_mv&lt; Session_t &gt; Class Template Reference</div></div>
</div><!--header-->
<div class="contents">

<p>Implements the SHM-related API common to <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">shm::arena_lend::jemalloc::Server_session</a> and <a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc.html#a837b4566cb2a734eb0ba58f285d084fe" title="This is to session::Client_session what shm::arena_lend::jemalloc::Server_session is to session::Serv...">shm::arena_lend::jemalloc::Client_session</a>.  
 <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ipc::session::shm::arena_lend::jemalloc::Session_mv&lt; Session_t &gt;:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv__inherit__graph.svg" width="182" height="131"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for ipc::session::shm::arena_lend::jemalloc::Session_mv&lt; Session_t &gt;:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv__coll__graph.svg" width="182" height="131"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a6c0160faae9e8a9c880b6f78fafb428c"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a6c0160faae9e8a9c880b6f78fafb428c">Base</a> = <a class="el" href="classSession__t.html">Session_t</a></td></tr>
<tr class="memdesc:a6c0160faae9e8a9c880b6f78fafb428c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for our base class. To the user: note its <code>public</code> API is inherited.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a6c0160faae9e8a9c880b6f78fafb428c">More...</a><br /></td></tr>
<tr class="separator:a6c0160faae9e8a9c880b6f78fafb428c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae30ae4b65cd4178fa26eed660688829f"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f">Arena</a> = typename Base::Base::Impl::Arena</td></tr>
<tr class="memdesc:ae30ae4b65cd4178fa26eed660688829f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The arena object on which one may call <code>construct&lt;T&gt;(ctor_args...)</code>, where <code>ctor_args</code> are arguments to the <code>T::T()</code> constructor.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f">More...</a><br /></td></tr>
<tr class="separator:ae30ae4b65cd4178fa26eed660688829f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad63c175a57f314c1ed3d4a78329030cd"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd">Shm_session</a> = jemalloc::Shm_session</td></tr>
<tr class="memdesc:ad63c175a57f314c1ed3d4a78329030cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">The lend/borrow engine type which allows one to "lend" a <code>T</code> (obtained via <code>Arena::construct&lt;T&gt;()</code>) to the opposing process, ahead of transmitting the object over a channel obtained from <code>*this</code> session.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd">More...</a><br /></td></tr>
<tr class="separator:ad63c175a57f314c1ed3d4a78329030cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbb009e31853d3222a1614535ce401b7"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:abbb009e31853d3222a1614535ce401b7"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#abbb009e31853d3222a1614535ce401b7">Allocator</a> = <a class="el" href="classipc_1_1shm_1_1stl_1_1Stateless__allocator.html">ipc::shm::stl::Stateless_allocator</a>&lt; T, <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f">Arena</a> &gt;</td></tr>
<tr class="memdesc:abbb009e31853d3222a1614535ce401b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience alias to be used in STL-compliant <code>T</code>s with <code>"Arena::construct&lt;T&gt;()"</code>, our own <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">lend_object&lt;T&gt;()</a>, and <code>"Shm_session::lend_object&lt;T&gt;()"</code>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#abbb009e31853d3222a1614535ce401b7">More...</a><br /></td></tr>
<tr class="separator:abbb009e31853d3222a1614535ce401b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae32bce4c9889325f38d7d6f902efe4e8"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ae32bce4c9889325f38d7d6f902efe4e8"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae32bce4c9889325f38d7d6f902efe4e8">Borrower_allocator</a> = <a class="el" href="classipc_1_1shm_1_1stl_1_1Stateless__allocator.html">ipc::shm::stl::Stateless_allocator</a>&lt; T, <a class="el" href="namespaceipc_1_1shm.html#a6c8474d5b7dda220ed1f6693fc2e3c89">ipc::shm::Arena_to_borrower_allocator_arena_t</a>&lt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f">Arena</a> &gt; &gt;</td></tr>
<tr class="memdesc:ae32bce4c9889325f38d7d6f902efe4e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience alias to be used in STL-compliant <code>T</code>s with our own <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">borrow_object&lt;T&gt;()</a> and <code>"Shm_session::borrow_object&lt;T&gt;()"</code>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae32bce4c9889325f38d7d6f902efe4e8">More...</a><br /></td></tr>
<tr class="separator:ae32bce4c9889325f38d7d6f902efe4e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44555ea9786408cd39652d45758bcabc"><td class="memTemplParams" colspan="2">template&lt;typename Message_body &gt; </td></tr>
<tr class="memitem:a44555ea9786408cd39652d45758bcabc"><td class="memTemplItemLeft" align="right" valign="top">using&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a44555ea9786408cd39652d45758bcabc">Structured_channel</a> = typename <a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm_1_1arena__lend_1_1jemalloc.html#ab68a69ad42d97d754f4e77c8cadd3a5e">transport::struc::shm::arena_lend::jemalloc::Channel</a>&lt; typename Base::Base::Impl::Session_base_obj::Channel_obj, Message_body &gt;</td></tr>
<tr class="memdesc:a44555ea9786408cd39652d45758bcabc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a> API per contract.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a44555ea9786408cd39652d45758bcabc">More...</a><br /></td></tr>
<tr class="separator:a44555ea9786408cd39652d45758bcabc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf1b1ad45b96d49c4c86e234a656f01b"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#aaf1b1ad45b96d49c4c86e234a656f01b">Structured_msg_builder_config</a> = typename Base::Base::Impl::Structured_msg_builder_config</td></tr>
<tr class="memdesc:aaf1b1ad45b96d49c4c86e234a656f01b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a> API per contract.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#aaf1b1ad45b96d49c4c86e234a656f01b">More...</a><br /></td></tr>
<tr class="separator:aaf1b1ad45b96d49c4c86e234a656f01b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50304d6dba4a332952aee67dc37598d0"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a50304d6dba4a332952aee67dc37598d0">Structured_msg_reader_config</a> = typename Base::Base::Impl::Structured_msg_reader_config</td></tr>
<tr class="memdesc:a50304d6dba4a332952aee67dc37598d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements <a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a> API per contract.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a50304d6dba4a332952aee67dc37598d0">More...</a><br /></td></tr>
<tr class="separator:a50304d6dba4a332952aee67dc37598d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add76f1d323854ec7be266a255a4f0073"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#add76f1d323854ec7be266a255a4f0073">Blob</a> = typename Base::Base::Impl::Blob</td></tr>
<tr class="memdesc:add76f1d323854ec7be266a255a4f0073"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alias for a light-weight blob used in <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">borrow_object()</a> and <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">lend_object()</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#add76f1d323854ec7be266a255a4f0073">More...</a><br /></td></tr>
<tr class="separator:add76f1d323854ec7be266a255a4f0073"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a361c867d10a255ff62cdb19b75fc0a18"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f">Arena</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18">session_shm</a> ()</td></tr>
<tr class="memdesc:a361c867d10a255ff62cdb19b75fc0a18"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns SHM <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a> with per-session scope, meaning it shall be accessible only during the lifetime of this session, by this <a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a> (via this accessor).  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18">More...</a><br /></td></tr>
<tr class="separator:a361c867d10a255ff62cdb19b75fc0a18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8465d440f480f57ceda2734def8c39fa"><td class="memItemLeft" align="right" valign="top">std::shared_ptr&lt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f">Arena</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a8465d440f480f57ceda2734def8c39fa">session_shm_ptr</a> ()</td></tr>
<tr class="memdesc:a8465d440f480f57ceda2734def8c39fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Identical to <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a> but returns that via a <code>shared_ptr</code>-handle as required for work directly within ipc::shm::arena_lend::jemalloc APIs.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a8465d440f480f57ceda2734def8c39fa">More...</a><br /></td></tr>
<tr class="separator:a8465d440f480f57ceda2734def8c39fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1346f63d338304a20bef43d3c93c7562"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a1346f63d338304a20bef43d3c93c7562"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#add76f1d323854ec7be266a255a4f0073">Blob</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562">lend_object</a> (const typename Arena::template Handle&lt; T &gt; &amp;handle)</td></tr>
<tr class="memdesc:a1346f63d338304a20bef43d3c93c7562"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds an owner process to the owner set of the given <code>Arena::construct()</code>-ed handle; and returns an opaque blob, such that if one passes it to opposing <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">Session_mv::borrow_object()</a> in the receiving process, that <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">borrow_object()</a></code> shall return an equivalent <code>Handle</code> in that process.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562">More...</a><br /></td></tr>
<tr class="separator:a1346f63d338304a20bef43d3c93c7562"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7880b205b076ddd46537826d3b2028e9"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a7880b205b076ddd46537826d3b2028e9"><td class="memTemplItemLeft" align="right" valign="top">Arena::template Handle&lt; T &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9">borrow_object</a> (const <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#add76f1d323854ec7be266a255a4f0073">Blob</a> &amp;serialization)</td></tr>
<tr class="memdesc:a7880b205b076ddd46537826d3b2028e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Completes the cross-process operation begun by oppsing <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">Session_mv::lend_object()</a> that returned <code>serialization</code>; to be invoked in the intended new owner process which is operating <code>*this</code>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9">More...</a><br /></td></tr>
<tr class="separator:a7880b205b076ddd46537826d3b2028e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad00593f745b49c41fa446bdf4250f2e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#aaf1b1ad45b96d49c4c86e234a656f01b">Structured_msg_builder_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad00593f745b49c41fa446bdf4250f2e9">session_shm_builder_config</a> ()</td></tr>
<tr class="memdesc:ad00593f745b49c41fa446bdf4250f2e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns builder config suitable for capnp-serializing out-messages in SHM arena <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad00593f745b49c41fa446bdf4250f2e9">More...</a><br /></td></tr>
<tr class="separator:ad00593f745b49c41fa446bdf4250f2e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4d3c3831486cb32b3a81b5783891d7d"><td class="memItemLeft" align="right" valign="top">Structured_msg_builder_config::Builder::Session&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ac4d3c3831486cb32b3a81b5783891d7d">session_shm_lender_session</a> ()</td></tr>
<tr class="memdesc:ac4d3c3831486cb32b3a81b5783891d7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">When transmitting items originating in <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a> via <a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder.html#a7909a2d1e1d24037fb8af5338fffa783" title="Implements concept API.">transport::struc::shm::Builder::emit_serialization()</a>(and/or <a class="el" href="classipc_1_1transport_1_1struc_1_1Channel.html" title="Owning and wrapping a pre-connected transport::Channel peer (an endpoint of an established channel ov...">transport::struc::Channel</a> send facilities), returns additional-to-payload information necessary to target the opposing process properly.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ac4d3c3831486cb32b3a81b5783891d7d">More...</a><br /></td></tr>
<tr class="separator:ac4d3c3831486cb32b3a81b5783891d7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6385f523cd5de727b305e9b165b94ad5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a50304d6dba4a332952aee67dc37598d0">Structured_msg_reader_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a6385f523cd5de727b305e9b165b94ad5">session_shm_reader_config</a> ()</td></tr>
<tr class="memdesc:a6385f523cd5de727b305e9b165b94ad5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a74813622394c2876c4e3a93c2071f412" title="Returns reader config that can be used to deserialize any transport::struc::Msg_in to have arrived fr...">shm_reader_config()</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a6385f523cd5de727b305e9b165b94ad5">More...</a><br /></td></tr>
<tr class="separator:a6385f523cd5de727b305e9b165b94ad5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29402234e4b12daa9796687a310a176d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a50304d6dba4a332952aee67dc37598d0">Structured_msg_reader_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a29402234e4b12daa9796687a310a176d">app_shm_reader_config</a> ()</td></tr>
<tr class="memdesc:a29402234e4b12daa9796687a310a176d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a74813622394c2876c4e3a93c2071f412" title="Returns reader config that can be used to deserialize any transport::struc::Msg_in to have arrived fr...">shm_reader_config()</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a29402234e4b12daa9796687a310a176d">More...</a><br /></td></tr>
<tr class="separator:a29402234e4b12daa9796687a310a176d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abde9667974bac936135e6a826e856f9a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd">Shm_session</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#abde9667974bac936135e6a826e856f9a">shm_session</a> ()</td></tr>
<tr class="memdesc:abde9667974bac936135e6a826e856f9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns lend/borrow engine <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd" title="The lend/borrow engine type which allows one to &quot;lend&quot; a T (obtained via Arena::construct&lt;T&gt;()) to th...">Shm_session</a> for <code>*this</code> session.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#abde9667974bac936135e6a826e856f9a">More...</a><br /></td></tr>
<tr class="separator:abde9667974bac936135e6a826e856f9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74813622394c2876c4e3a93c2071f412"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a50304d6dba4a332952aee67dc37598d0">Structured_msg_reader_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a74813622394c2876c4e3a93c2071f412">shm_reader_config</a> ()</td></tr>
<tr class="memdesc:a74813622394c2876c4e3a93c2071f412"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns reader config that can be used to deserialize any <a class="el" href="classipc_1_1transport_1_1struc_1_1Msg__in.html" title="A structured in-message instance suitable as received and emittable (to user) by struc::Channel.">transport::struc::Msg_in</a> to have arrived from the opposing process in <code>*this</code> session.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a74813622394c2876c4e3a93c2071f412">More...</a><br /></td></tr>
<tr class="separator:a74813622394c2876c4e3a93c2071f412"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="related" name="related"></a>
Related Functions</h2></td></tr>
<tr><td class="ititle" colspan="2"><p >(Note that these are not member functions.) </p>
</td></tr>
<tr class="memitem:aea882d38a00f81a98d6604e300c5a01a"><td class="memTemplParams" colspan="2">template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </td></tr>
<tr class="memitem:aea882d38a00f81a98d6604e300c5a01a"><td class="memTemplItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#aea882d38a00f81a98d6604e300c5a01a">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt; &amp;val)</td></tr>
<tr class="memdesc:aea882d38a00f81a98d6604e300c5a01a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints string representation of the given <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html" title="Implements the SHM-related API common to shm::arena_lend::jemalloc::Server_session and shm::arena_len...">Session_mv</a></code> to the given <code>ostream</code>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#aea882d38a00f81a98d6604e300c5a01a">More...</a><br /></td></tr>
<tr class="separator:aea882d38a00f81a98d6604e300c5a01a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><div class="compoundTemplParams">template&lt;typename <a class="el" href="classSession__t.html">Session_t</a>&gt;<br />
class ipc::session::shm::arena_lend::jemalloc::Session_mv&lt; Session_t &gt;</div><p >Implements the SHM-related API common to <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">shm::arena_lend::jemalloc::Server_session</a> and <a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc.html#a837b4566cb2a734eb0ba58f285d084fe" title="This is to session::Client_session what shm::arena_lend::jemalloc::Server_session is to session::Serv...">shm::arena_lend::jemalloc::Client_session</a>. </p>
<p >It is, as of this writing, not to be instantiated by itself. Rather see <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">shm::arena_lend::jemalloc::Server_session</a> (and <a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc.html#a837b4566cb2a734eb0ba58f285d084fe" title="This is to session::Client_session what shm::arena_lend::jemalloc::Server_session is to session::Serv...">shm::arena_lend::jemalloc::Client_session</a>) regarding what to actually instantiate and further context. As for the API in <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html" title="Implements the SHM-related API common to shm::arena_lend::jemalloc::Server_session and shm::arena_len...">Session_mv</a> itself, it is quite critical. <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">shm::arena_lend::jemalloc::Server_session</a> doc header explains the background. Member doc headers formally document those members given that background. <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a> doc header is particularly useful.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname"><a class="el" href="classSession__t.html">Session_t</a></td><td>Class for us to <code>public</code>ly sub-class: <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session__mv.html">Server_session_mv</a>&lt;...&gt;</code> or <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Client__session__mv.html">Client_session_mv</a>&lt;...&gt;</code>. Note its <code>public</code> API is inherited. See the relevant class template's doc header. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00050">50</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="abbb009e31853d3222a1614535ce401b7" name="abbb009e31853d3222a1614535ce401b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abbb009e31853d3222a1614535ce401b7">&#9670;&nbsp;</a></span>Allocator</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;<a class="el" href="classAllocator.html">::Allocator</a> =  <a class="el" href="classipc_1_1shm_1_1stl_1_1Stateless__allocator.html">ipc::shm::stl::Stateless_allocator</a>&lt;T, <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f">Arena</a>&gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Convenience alias to be used in STL-compliant <code>T</code>s with <code>"Arena::construct&lt;T&gt;()"</code>, our own <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">lend_object&lt;T&gt;()</a>, and <code>"Shm_session::lend_object&lt;T&gt;()"</code>. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae32bce4c9889325f38d7d6f902efe4e8" title="Convenience alias to be used in STL-compliant Ts with our own borrow_object&lt;T&gt;() and &quot;Shm_session::bo...">Borrower_allocator</a> which must be the allocator type used on the borrower side.</dd></dl>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">T</td><td>See standard C++ <code><a class="el" href="classAllocator.html">Allocator</a></code> concept. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00126">126</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<a id="ae30ae4b65cd4178fa26eed660688829f" name="ae30ae4b65cd4178fa26eed660688829f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae30ae4b65cd4178fa26eed660688829f">&#9670;&nbsp;</a></span>Arena</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::Arena =  typename Base::Base::Impl::Arena</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The arena object on which one may call <code>construct&lt;T&gt;(ctor_args...)</code>, where <code>ctor_args</code> are arguments to the <code>T::T()</code> constructor. </p>
<p >While a full-length discussion of the allowed properties of <code>T</code> is outside out scope here (belongs in <a class="el" href="namespaceipc_1_1shm.html" title="Modules for SHared Memory (SHM) support.">ipc::shm</a> docs), here's a short version for convenience: PODs work; STL nested container+POD combos work, as long as a <a class="el" href="namespaceipc_1_1shm_1_1stl.html" title="ipc::shm sub-module providing integration between STL-compliant components (including containers) and...">shm::stl</a> allocator is used at all levels; manually-implemented non-STL-compliant data structures work if care is taken to use <code>Arena::allocate()</code> and <code>Arena::Pointer</code>.</p>
<p >Suppose <code>A-&gt;construct()</code> yields handle <code>h</code>, where <code>A</code> is any <code>Arena*</code> returned by a <code>*this</code> accessor &ndash; <code>this-&gt;app_shm()</code>, <code>this-&gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a></code> (the former available only is <code>*this</code> is really an instance of sub-class <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session__mv.html">Server_session_mv</a>). Then <code>h</code> can be passed to <code>this-&gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">lend_object()</a></code> which yields <code>Blob b</code>. Further, an <code>h</code> returned by <code>s-&gt;borrow_object(b)</code>, executed on the opposing <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html" title="Implements the SHM-related API common to shm::arena_lend::jemalloc::Server_session and shm::arena_len...">shm::arena_lend::jemalloc::Session_mv</a> s</code> (after receiving <code>b</code> via IPC) shall point to the same location in <code>A</code> and will become part of a cross-process <code>shared_ptr</code> group with the original <code>h</code> (and any copies/moves thereof), <code>*h</code> garbage-collected based on a (conceptual) cross-process ref-count.</p>
<p >Full <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a> capabilities are described in the documentation for the alias's target, shm::arena_lend::jemalloc::Ipc_arena.</p>
<p ><code>this-&gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">lend_object()</a></code> and <code>this-&gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">borrow_object()</a></code> really forward to the same methods of <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd" title="The lend/borrow engine type which allows one to &quot;lend&quot; a T (obtained via Arena::construct&lt;T&gt;()) to th...">Shm_session</a>. That <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd" title="The lend/borrow engine type which allows one to &quot;lend&quot; a T (obtained via Arena::construct&lt;T&gt;()) to th...">Shm_session</a> can itself be accessed via <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#abde9667974bac936135e6a826e856f9a" title="Returns lend/borrow engine Shm_session for *this session.">shm_session()</a>. That said it is likely best to use the forwarding <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html" title="Implements the SHM-related API common to shm::arena_lend::jemalloc::Server_session and shm::arena_len...">Session_mv</a> methods, as it is conducive to generic programming in which an alternate-SHM-provider <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html" title="Implements the SHM-related API common to shm::arena_lend::jemalloc::Server_session and shm::arena_len...">Session_mv</a></code> could be used instead. In particular SHM-classic-based <a class="el" href="classipc_1_1session_1_1shm_1_1classic_1_1Session__mv.html#a794f83a8111428b3b1feec7216f692dd" title="Adds an owner process to the owner set of the given session_shm-&gt;construct()- or app_shm()-&gt;construct...">session::shm::classic::Session_mv::lend_object()</a> and <a class="el" href="classipc_1_1session_1_1shm_1_1classic_1_1Session__mv.html#a4223fc944735adb6946a9d1938d06a20" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">session::shm::classic::Session_mv::borrow_object()</a> APIs behave identically; whereas <code>session::shm::classic::Session_mv::shm_session()</code> does not exist (because the mechanics of sharing SHM-stored objects in SHM-classic fundamentally differ from those of SHM-jemalloc). Hence code that uses <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">Session_mv::lend_object()</a></code> and <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">Session_mv::borrow_object()</a></code> would work with either <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html" title="Implements the SHM-related API common to shm::arena_lend::jemalloc::Server_session and shm::arena_len...">Session_mv</a></code>.</p>
<dl class="section note"><dt>Note</dt><dd>Unlike with SHM-classic, <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">Session_mv::borrow_object()</a> can accept a <code>Blob</code> generated by opposing process's <code>Session_mv::Shm_session::lend_object()</code>; and conversely <code>Session_mv::Shm_session::borrow_object()</code> can accept a <code>Blob</code> from <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">Session_mv::lend_object()</a>. While, again, it is probably best to just use <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html" title="Implements the SHM-related API common to shm::arena_lend::jemalloc::Server_session and shm::arena_len...">Session_mv</a> methods on both sides, if the need does arise, one can take advantage of this compatibility. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00093">93</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<a id="a6c0160faae9e8a9c880b6f78fafb428c" name="a6c0160faae9e8a9c880b6f78fafb428c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6c0160faae9e8a9c880b6f78fafb428c">&#9670;&nbsp;</a></span>Base</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::Base =  <a class="el" href="classSession__t.html">Session_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Short-hand for our base class. To the user: note its <code>public</code> API is inherited. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00057">57</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<a id="add76f1d323854ec7be266a255a4f0073" name="add76f1d323854ec7be266a255a4f0073"></a>
<h2 class="memtitle"><span class="permalink"><a href="#add76f1d323854ec7be266a255a4f0073">&#9670;&nbsp;</a></span>Blob</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::Blob =  typename Base::Base::Impl::Blob</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Alias for a light-weight blob used in <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">borrow_object()</a> and <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">lend_object()</a>. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00162">162</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<a id="ae32bce4c9889325f38d7d6f902efe4e8" name="ae32bce4c9889325f38d7d6f902efe4e8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae32bce4c9889325f38d7d6f902efe4e8">&#9670;&nbsp;</a></span>Borrower_allocator</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::Borrower_allocator =  <a class="el" href="classipc_1_1shm_1_1stl_1_1Stateless__allocator.html">ipc::shm::stl::Stateless_allocator</a>&lt;T, <a class="el" href="namespaceipc_1_1shm.html#a6c8474d5b7dda220ed1f6693fc2e3c89">ipc::shm::Arena_to_borrower_allocator_arena_t</a>&lt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f">Arena</a>&gt; &gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Convenience alias to be used in STL-compliant <code>T</code>s with our own <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">borrow_object&lt;T&gt;()</a> and <code>"Shm_session::borrow_object&lt;T&gt;()"</code>. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">T</td><td>See standard C++ <code><a class="el" href="classAllocator.html">Allocator</a></code> concept. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00136">136</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<a id="ad63c175a57f314c1ed3d4a78329030cd" name="ad63c175a57f314c1ed3d4a78329030cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad63c175a57f314c1ed3d4a78329030cd">&#9670;&nbsp;</a></span>Shm_session</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::Shm_session =  jemalloc::Shm_session</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The lend/borrow engine type which allows one to "lend" a <code>T</code> (obtained via <code>Arena::construct&lt;T&gt;()</code>) to the opposing process, ahead of transmitting the object over a channel obtained from <code>*this</code> session. </p>
<p >The main methods of interest &ndash; <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">lend_object()</a></code> and <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">borrow_object()</a></code> &ndash; are explained in context in <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a> doc header and are more naturally accessed via <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">Session_mv::lend_object()</a> and <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">Session_mv::borrow_object()</a>.</p>
<p >That said, <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd" title="The lend/borrow engine type which allows one to &quot;lend&quot; a T (obtained via Arena::construct&lt;T&gt;()) to th...">Shm_session</a> can be used for further advanced purposes. For example one could separately create an <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a> (beyond those supplied via <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a> and Server_session_mv::app_shm()) and register it via <code>Shm_session::lend_arena()</code>; then it would be possible to <code>Shm_session::lend_object()</code> and transmit objects <code>construct()</code>ed in that additional <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a>. Why do such a thing? Answer: There are various conceivable use cases. Perhaps a shorter-lived segregated <code>Arena</code> is desirable for security or safety reasons for example.</p>
<p >The point is: <a class="el" href="namespaceipc_1_1session.html" title="Flow-IPC module providing the broad lifecycle and shared-resource organization – via the session conc...">ipc::session</a>, per its mission, pre-creates the SHM infrastructure for you thus eliminating the various difficulties inherent in this task &ndash; while making <code><a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a></code>s backed by this SHM-provider largely interchangeable with ones backed by another, such as SHM-classic. In doing so it hides the SHM-provider-specific work required. Yet it <em>also</em> provides to you the ability to use the SHM-provider-specific API directly as desired. Should you avoid this? Informally: Yes, as it'll make your life easier... when it is sufficient. If it is <em>not</em> sufficient, you have the tools to go beyond it. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00114">114</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<a id="a44555ea9786408cd39652d45758bcabc" name="a44555ea9786408cd39652d45758bcabc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a44555ea9786408cd39652d45758bcabc">&#9670;&nbsp;</a></span>Structured_channel</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
<div class="memtemplate">
template&lt;typename Message_body &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::Structured_channel =  typename <a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm_1_1arena__lend_1_1jemalloc.html#ab68a69ad42d97d754f4e77c8cadd3a5e">transport::struc::shm::arena_lend::jemalloc::Channel</a> &lt;typename Base::Base::Impl::Session_base_obj::Channel_obj, Message_body&gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a> API per contract. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1session_1_1Session.html#a29eaaa691a992e3a83662e00be7d7446" title="Convenience alias for the transport::struc::Channel concrete type to use if one desires (1) to upgrad...">Session::Structured_channel</a>: implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00144">144</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<a id="aaf1b1ad45b96d49c4c86e234a656f01b" name="aaf1b1ad45b96d49c4c86e234a656f01b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf1b1ad45b96d49c4c86e234a656f01b">&#9670;&nbsp;</a></span>Structured_msg_builder_config</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::Structured_msg_builder_config =  typename Base::Base::Impl::Structured_msg_builder_config</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a> API per contract. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1session_1_1Session.html#a2612cefeace1ba12e649ba0e509aaab1" title="Convenience alias equal to Structured_channel&lt;M&gt;::Builder_config (regardless of M).">Session::Structured_msg_builder_config</a>: implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00153">153</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<a id="a50304d6dba4a332952aee67dc37598d0" name="a50304d6dba4a332952aee67dc37598d0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a50304d6dba4a332952aee67dc37598d0">&#9670;&nbsp;</a></span>Structured_msg_reader_config</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::Structured_msg_reader_config =  typename Base::Base::Impl::Structured_msg_reader_config</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Implements <a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a> API per contract. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1session_1_1Session.html#ac23d047087984addf221f0baa0058616" title="Convenience alias equal to Structured_channel&lt;M&gt;::Reader_config (regardless of M).">Session::Structured_msg_reader_config</a>: implemented concept. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00159">159</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a29402234e4b12daa9796687a310a176d" name="a29402234e4b12daa9796687a310a176d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a29402234e4b12daa9796687a310a176d">&#9670;&nbsp;</a></span>app_shm_reader_config()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a50304d6dba4a332952aee67dc37598d0">::Structured_msg_reader_config</a> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::app_shm_reader_config</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a74813622394c2876c4e3a93c2071f412" title="Returns reader config that can be used to deserialize any transport::struc::Msg_in to have arrived fr...">shm_reader_config()</a>. </p>
<h3>Rationale</h3>
<p >Why does this exist, given that <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a74813622394c2876c4e3a93c2071f412" title="Returns reader config that can be used to deserialize any transport::struc::Msg_in to have arrived fr...">shm_reader_config()</a> exists? Answer: It is for generic programming, for code that would like to work independently of which SHM-enabled <a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a> is in use; for example interchangeably between <code>*this</code> class or <a class="el" href="classipc_1_1session_1_1shm_1_1classic_1_1Session__mv.html" title="Implements the SHM-related API common to shm::classic::Server_session and shm::classic::Client_sessio...">shm::classic::Session_mv</a>. Hence code that wants to set up a <a class="el" href="classipc_1_1transport_1_1struc_1_1Msg__in.html" title="A structured in-message instance suitable as received and emittable (to user) by struc::Channel.">transport::struc::Msg_in</a> (or <a class="el" href="classipc_1_1transport_1_1struc_1_1Channel.html" title="Owning and wrapping a pre-connected transport::Channel peer (an endpoint of an established channel ov...">transport::struc::Channel</a> that receives them), and requires a reader-config object capable of decoding messages stored in the opposing process's <code>app_shm()</code> (session-scope <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a>), then this method can be used &ndash; and will work, because <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a74813622394c2876c4e3a93c2071f412" title="Returns reader config that can be used to deserialize any transport::struc::Msg_in to have arrived fr...">shm_reader_config()</a> will work for <em>any</em> <code>Arena</code> &ndash; which trivially includes opposing <code>app_shm()</code>.</p>
<p >For example, <a class="el" href="structipc_1_1transport_1_1struc_1_1Channel__base_1_1Serialize__via__session__shm.html" title="Tag type for ctor selection: Backing RAM for serialization comes from a given session::Session&#39;s SHM ...">transport::struc::Channel_base::Serialize_via_session_shm</a> tag ctor of <a class="el" href="classipc_1_1transport_1_1struc_1_1Channel.html" title="Owning and wrapping a pre-connected transport::Channel peer (an endpoint of an established channel ov...">transport::struc::Channel</a> will internally invoke this when loading up its internal per-app reader-config for you.</p>
<p >What if <code>*this</code> is really super-classing <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session__mv.html">Server_session_mv</a>? The opposing object is of type <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Client__session__mv.html">Client_session_mv</a> which lacks <code>app_shm()</code>; so isn't the present method meaningless? Not exactly: if someday a message <em>were</em> to arrive from a somehow-app-scope-<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a>-capable client, then this would decode it just fine. As of this writing that's impossible, so it's a moot question; yet it allows for code such as the aforementioned <a class="el" href="classipc_1_1transport_1_1struc_1_1Channel.html" title="Owning and wrapping a pre-connected transport::Channel peer (an endpoint of an established channel ov...">transport::struc::Channel</a> tag ctor to be written simply in a way that'll work for <a class="el" href="namespaceipc_1_1session_1_1shm_1_1classic.html" title="Support for SHM-backed ipc::session sessions and session-servers with the SHM-classic (ipc::shm::clas...">shm::classic</a> (which does have a <a class="el" href="classipc_1_1session_1_1shm_1_1classic_1_1Session__mv.html#ac6a4f1fbafb583f37d7586c6a199430f" title="Returns SHM Arena with per-app scope, meaning its pool shall be accessible potentially beyond the lif...">shm::classic::Session_mv::app_shm()</a>) and <code>*this</code> class as well.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00412">412</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<a id="a7880b205b076ddd46537826d3b2028e9" name="a7880b205b076ddd46537826d3b2028e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7880b205b076ddd46537826d3b2028e9">&#9670;&nbsp;</a></span>borrow_object()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::Arena::template Handle&lt; T &gt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::borrow_object </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#add76f1d323854ec7be266a255a4f0073">Blob</a> &amp;&#160;</td>
          <td class="paramname"><em>serialization</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Completes the cross-process operation begun by oppsing <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">Session_mv::lend_object()</a> that returned <code>serialization</code>; to be invoked in the intended new owner process which is operating <code>*this</code>. </p>
<h3>Possibility of error</h3>
<p >Indicated by this returning null, the remarks in the <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">lend_object()</a> doc header "Possibility of error" section apply here equally. Reminder: be ready for this to return null; it can absolutely happen.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">T</td><td>See <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">lend_object()</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">serialization</td><td>Value, not <code>.empty()</code>, returned by opposing <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">lend_object()</a> and transmitted bit-for-bit to this process. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. On success, non-null pointer; otherwise a null pointer. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00380">380</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<a id="a1346f63d338304a20bef43d3c93c7562" name="a1346f63d338304a20bef43d3c93c7562"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1346f63d338304a20bef43d3c93c7562">&#9670;&nbsp;</a></span>lend_object()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
<div class="memtemplate">
template&lt;typename T &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#add76f1d323854ec7be266a255a4f0073">::Blob</a> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::lend_object </td>
          <td>(</td>
          <td class="paramtype">const typename Arena::template Handle&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>handle</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Adds an owner process to the owner set of the given <code>Arena::construct()</code>-ed handle; and returns an opaque blob, such that if one passes it to opposing <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">Session_mv::borrow_object()</a> in the receiving process, that <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">borrow_object()</a></code> shall return an equivalent <code>Handle</code> in that process. </p>
<p >The returned <code>Blob</code> is guaranteed to have non-zero size that is small enough to be considered very cheap to copy and hence transmit over IPC.</p>
<p >It is the user's responsibility to transmit the returned blob, such as via a <a class="el" href="classipc_1_1transport_1_1Channel.html" title="Peer to a bundle of 1-2 full-duplex pipe(s), one for transmitting unstructured binary blobs; the othe...">transport::Channel</a>, to the owning process. Failing to do so may leak the object until arena cleanup. (Arena cleanup time depends on the source <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a>. If it came from <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a>, arena cleanup occurs at <a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a> destruction. If from Server_session_mv::app_shm(), arena cleanup occurs at <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">Server_session</a> destruction. If it is a custom-created other <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a> &ndash; not managed by <a class="el" href="namespaceipc_1_1session.html" title="Flow-IPC module providing the broad lifecycle and shared-resource organization – via the session conc...">ipc::session</a> &ndash; then it would occur whenever you choose to destroy that <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a>. If a destructor does not run, due to crash/etc., then the leaked <a class="el" href="namespaceipc_1_1session.html" title="Flow-IPC module providing the broad lifecycle and shared-resource organization – via the session conc...">ipc::session</a>-managed <code>Arena</code>s' pools are cleaned zealously by <a class="el" href="namespaceipc_1_1session.html" title="Flow-IPC module providing the broad lifecycle and shared-resource organization – via the session conc...">ipc::session</a> via a heuristic algorithm.)</p>
<h3>What it really does</h3>
<p >It forwards to <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#abde9667974bac936135e6a826e856f9a" title="Returns lend/borrow engine Shm_session for *this session.">shm_session()</a>-&gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">lend_object()</a></code>. I mention this for context; it is arguably desirable to not count on these details in code that can generically work with a different SHM-enabled <a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a>, such as <a class="el" href="classipc_1_1session_1_1shm_1_1classic_1_1Session__mv.html" title="Implements the SHM-related API common to shm::classic::Server_session and shm::classic::Client_sessio...">shm::classic::Session_mv</a>, taken as a template param. E.g., <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">shm::arena_lend::jemalloc::Session_mv::lend_object()</a> does not, and cannot (as it does not exist), call any <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#abde9667974bac936135e6a826e856f9a" title="Returns lend/borrow engine Shm_session for *this session.">Session_mv::shm_session()</a></code> on which to invoke <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">lend_object()</a></code>.</p>
<p >However, if your code specifically counts on <code>*this</code> being a <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">shm::arena_lend::jemalloc::Server_session</a>, then it is not wrong to rely on this knowledge.</p>
<h3>Possibility of error</h3>
<p >This method returns an <code>.empty()</code> blob in the event of error. Assuming you used it with proper inputs, this indicates the session is hosed &ndash; most likely the opposing process is down &ndash; and therefore your code should be ready for this absolutely possible eventuality. The session-hosed condition <em>will</em> shortly be indicated via session on-error handler as well. Informally we suggest handling the first sign of the session going down (whether this returning empty, <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">borrow_object()</a> returning null, or the session on-error handler firing) uniformly by abandoning the entire session ASAP.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">T</td><td>See <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">handle</td><td>Value returned by <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a> method <code>construct&lt;T&gt;()</code>. Note this is a mere <code>shared_ptr&lt;T&gt;</code> albeit with unspecified custom deleter logic attached. The <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a> instance can be <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a>, Server_session_mv::app_shm(), or a non <a class="el" href="namespaceipc_1_1session.html" title="Flow-IPC module providing the broad lifecycle and shared-resource organization – via the session conc...">ipc::session</a>-managed custom <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a>, as long as it has been registered via <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#abde9667974bac936135e6a826e856f9a" title="Returns lend/borrow engine Shm_session for *this session.">shm_session()</a>-&gt;lend_arena()</code>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. On success, non-empty; otherwise an <code>.empty()</code> blob. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00371">371</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<a id="a361c867d10a255ff62cdb19b75fc0a18" name="a361c867d10a255ff62cdb19b75fc0a18"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a361c867d10a255ff62cdb19b75fc0a18">&#9670;&nbsp;</a></span>session_shm()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f">::Arena</a> * <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::session_shm</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns SHM <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a> with per-session scope, meaning it shall be accessible only during the lifetime of this session, by this <a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a> (via this accessor). </p>
<p >In the opposing <a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a> (via its <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a></code> accessor) a similar <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a> is also available and has the same conceptual lifetime (until <a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a> end). See <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a> doc header for useful instructions on working with <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a>, <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">lend_object()</a>, and <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">borrow_object()</a>.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00355">355</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<a id="ad00593f745b49c41fa446bdf4250f2e9" name="ad00593f745b49c41fa446bdf4250f2e9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad00593f745b49c41fa446bdf4250f2e9">&#9670;&nbsp;</a></span>session_shm_builder_config()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#aaf1b1ad45b96d49c4c86e234a656f01b">::Structured_msg_builder_config</a> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::session_shm_builder_config</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns builder config suitable for capnp-serializing out-messages in SHM arena <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a>. </p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00388">388</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<a id="ac4d3c3831486cb32b3a81b5783891d7d" name="ac4d3c3831486cb32b3a81b5783891d7d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac4d3c3831486cb32b3a81b5783891d7d">&#9670;&nbsp;</a></span>session_shm_lender_session()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::Structured_msg_builder_config::Builder::Session <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::session_shm_lender_session</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When transmitting items originating in <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a> via <a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder.html#a7909a2d1e1d24037fb8af5338fffa783" title="Implements concept API.">transport::struc::shm::Builder::emit_serialization()</a>(and/or <a class="el" href="classipc_1_1transport_1_1struc_1_1Channel.html" title="Owning and wrapping a pre-connected transport::Channel peer (an endpoint of an established channel ov...">transport::struc::Channel</a> send facilities), returns additional-to-payload information necessary to target the opposing process properly. </p>
<p >Internally: Since <code>*this</code> type is based on arena-lending SHM-provider type, this is simply <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#abde9667974bac936135e6a826e856f9a" title="Returns lend/borrow engine Shm_session for *this session.">shm_session()</a>. Generic code of yours should not need to rely on that impl detail, but we mention it for education/context.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00396">396</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<a id="a8465d440f480f57ceda2734def8c39fa" name="a8465d440f480f57ceda2734def8c39fa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8465d440f480f57ceda2734def8c39fa">&#9670;&nbsp;</a></span>session_shm_ptr()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">std::shared_ptr&lt; typename <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f">::Arena</a> &gt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::session_shm_ptr</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Identical to <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a> but returns that via a <code>shared_ptr</code>-handle as required for work directly within ipc::shm::arena_lend::jemalloc APIs. </p>
<p >Note this is a quirk of that particular API and, in particular, has no equivalent in <a class="el" href="namespaceipc_1_1session_1_1shm_1_1classic.html" title="Support for SHM-backed ipc::session sessions and session-servers with the SHM-classic (ipc::shm::clas...">ipc::session::shm::classic</a> <code><a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a></code> and <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">Session_server</a></code> counterparts. It should not be necessary to use except when going beyond <a class="el" href="namespaceipc_1_1session.html" title="Flow-IPC module providing the broad lifecycle and shared-resource organization – via the session conc...">ipc::session</a> for your SHM-arena needs.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00362">362</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<a id="a6385f523cd5de727b305e9b165b94ad5" name="a6385f523cd5de727b305e9b165b94ad5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6385f523cd5de727b305e9b165b94ad5">&#9670;&nbsp;</a></span>session_shm_reader_config()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a50304d6dba4a332952aee67dc37598d0">::Structured_msg_reader_config</a> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::session_shm_reader_config</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a74813622394c2876c4e3a93c2071f412" title="Returns reader config that can be used to deserialize any transport::struc::Msg_in to have arrived fr...">shm_reader_config()</a>. </p>
<h3>Rationale</h3>
<p >Why does this exist, given that <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a74813622394c2876c4e3a93c2071f412" title="Returns reader config that can be used to deserialize any transport::struc::Msg_in to have arrived fr...">shm_reader_config()</a> exists? Answer: It is for generic programming, for code that would like to work independently of which SHM-enabled <a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a> is in use; for example interchangeably between <code>*this</code> class or <a class="el" href="classipc_1_1session_1_1shm_1_1classic_1_1Session__mv.html" title="Implements the SHM-related API common to shm::classic::Server_session and shm::classic::Client_sessio...">shm::classic::Session_mv</a>. Hence code that wants to set up a <a class="el" href="classipc_1_1transport_1_1struc_1_1Msg__in.html" title="A structured in-message instance suitable as received and emittable (to user) by struc::Channel.">transport::struc::Msg_in</a> (or <a class="el" href="classipc_1_1transport_1_1struc_1_1Channel.html" title="Owning and wrapping a pre-connected transport::Channel peer (an endpoint of an established channel ov...">transport::struc::Channel</a> that receives them), and requires a reader-config object capable of decoding messages stored in the opposing process's <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a></code> (session-scope <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a>), then this method can be used &ndash; and will work, because <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a74813622394c2876c4e3a93c2071f412" title="Returns reader config that can be used to deserialize any transport::struc::Msg_in to have arrived fr...">shm_reader_config()</a> will work for <em>any</em> <code>Arena</code> &ndash; which trivially includes opposing <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a></code>.</p>
<p >For example, <a class="el" href="structipc_1_1transport_1_1struc_1_1Channel__base_1_1Serialize__via__session__shm.html" title="Tag type for ctor selection: Backing RAM for serialization comes from a given session::Session&#39;s SHM ...">transport::struc::Channel_base::Serialize_via_session_shm</a> tag ctor of <a class="el" href="classipc_1_1transport_1_1struc_1_1Channel.html" title="Owning and wrapping a pre-connected transport::Channel peer (an endpoint of an established channel ov...">transport::struc::Channel</a> will internally invoke this when loading up its internal per-session reader-config for you.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00404">404</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<a id="a74813622394c2876c4e3a93c2071f412" name="a74813622394c2876c4e3a93c2071f412"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a74813622394c2876c4e3a93c2071f412">&#9670;&nbsp;</a></span>shm_reader_config()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a50304d6dba4a332952aee67dc37598d0">::Structured_msg_reader_config</a> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::shm_reader_config</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns reader config that can be used to deserialize any <a class="el" href="classipc_1_1transport_1_1struc_1_1Msg__in.html" title="A structured in-message instance suitable as received and emittable (to user) by struc::Channel.">transport::struc::Msg_in</a> to have arrived from the opposing process in <code>*this</code> session. </p>
<p >Internally: This essentially contains simply <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#abde9667974bac936135e6a826e856f9a" title="Returns lend/borrow engine Shm_session for *this session.">shm_session()</a>. Generic code of yours should not need to rely on that impl detail, but we mention it for education/context.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00428">428</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<a id="abde9667974bac936135e6a826e856f9a" name="abde9667974bac936135e6a826e856f9a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abde9667974bac936135e6a826e856f9a">&#9670;&nbsp;</a></span>shm_session()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd">::Shm_session</a> * <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt;::shm_session</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns lend/borrow engine <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd" title="The lend/borrow engine type which allows one to &quot;lend&quot; a T (obtained via Arena::construct&lt;T&gt;()) to th...">Shm_session</a> for <code>*this</code> session. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd" title="The lend/borrow engine type which allows one to &quot;lend&quot; a T (obtained via Arena::construct&lt;T&gt;()) to th...">Shm_session</a> doc header.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00420">420</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a id="aea882d38a00f81a98d6604e300c5a01a" name="aea882d38a00f81a98d6604e300c5a01a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aea882d38a00f81a98d6604e300c5a01a">&#9670;&nbsp;</a></span>operator&lt;&lt;()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename <a class="el" href="classSession__t.html">Session_t</a> &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::ostream &amp; operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">Session_mv</a>&lt; <a class="el" href="classSession__t.html">Session_t</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Prints string representation of the given <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html" title="Implements the SHM-related API common to shm::arena_lend::jemalloc::Server_session and shm::arena_len...">Session_mv</a></code> to the given <code>ostream</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">os</td><td>Stream to which to write. </td></tr>
    <tr><td class="paramname">val</td><td>Object to serialize. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>os</code>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html#l00435">435</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>session/shm/arena_lend/jemalloc/<a class="el" href="session_2shm_2arena__lend_2jemalloc_2jemalloc__fwd_8hpp_source.html">jemalloc_fwd.hpp</a></li>
<li>session/shm/arena_lend/jemalloc/<a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session_8hpp_source.html">session.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Apr 11 2025 20:02:26 for Flow-IPC by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
</small></address>
</body>
</html>
